package it.hive.model.common;

import it.hive.mediaplayer.beans.impl.Traccia;
import it.hive.model.domain.media.Gruppo;
import it.hive.model.domain.media.Trasmissione;

import java.util.ArrayList;

import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

public class ApplicationProperties {
	// GUI
	public static final SimpleStringProperty FrameTitle = new SimpleStringProperty();
	public static final SimpleDoubleProperty rightAudio = new SimpleDoubleProperty();
	public static final SimpleDoubleProperty leftAudio = new SimpleDoubleProperty();

	// INTERNET CONNECTION
	public static volatile SimpleBooleanProperty internetConnection = new SimpleBooleanProperty();

	// PROXY
	public static volatile SimpleStringProperty proxyIP = new SimpleStringProperty();
	public static volatile SimpleStringProperty proxyPort = new SimpleStringProperty();
	public static volatile SimpleBooleanProperty boolUsaProxy = new SimpleBooleanProperty();

	// DOWNLOAD
	public static volatile SimpleDoubleProperty percentualeDownload = new SimpleDoubleProperty();
	public static volatile SimpleBooleanProperty boolUsaSempreDefaultDownloadDirectory = new SimpleBooleanProperty();
	public static volatile SimpleStringProperty defaultDownloadDirectoryPath = new SimpleStringProperty();

	// SETTINGS PANEL
	public static volatile SimpleBooleanProperty proxyPanelEnabled = new SimpleBooleanProperty();
	public static volatile SimpleBooleanProperty impostazioniSalvate = new SimpleBooleanProperty();
	public static volatile SimpleBooleanProperty animazioneAudioAbilitata = new SimpleBooleanProperty();
	public static volatile SimpleDoubleProperty livelloAnimazioneAudio = new SimpleDoubleProperty();

	// FASCE ORARIE - TRASMISSIONI - TRACKLIST
	public static volatile ObservableList<Gruppo> observableGruppi = FXCollections.observableList(new ArrayList<Gruppo>());
	public static volatile ObservableList<Trasmissione> observableTrasmissioni = FXCollections.observableList(new ArrayList<Trasmissione>());
	public static volatile ObservableList<Traccia> observableTrackList = FXCollections.observableList(new ArrayList<Traccia>());

	// TRACCIA
	public static volatile SimpleObjectProperty<Traccia> currentSelectedTrack = new SimpleObjectProperty<>();

	// DOWNLOAD
	public static volatile SimpleBooleanProperty downloadInCorso = new SimpleBooleanProperty();

}
